iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0

今天我們要來做修改Views跟現有data的變更,包含前後端。
Views的結構基本是運用xml定義,如果要在特定欄位新增,需要使用position來宣告,進行以下操作:

  • inside(預設) 將附加內容到所選的node
  • after 在選定的node之後新增內容。
    可以到library/views/book_view.xml,這樣就會交換他們的順序。
     <field name="isbn" position="after">
       <field name="is_available" />
     </field>

某些情況下,我們可能沒有唯一値的node來做定位,這樣的話可以使用Xpath來定位,


     <xpath expr="//field[@name='isbn']" position="after">
       <field name="is_available" />
     </xpath>
     -->
  • before在選定的node之前新增內容。
  • replace替換選定的node,如果內容為空,則刪除該元素
    也可以用其他屬性包住所替換的元素,可以到library/views/book_view.xml測試:
<field name="name" position="replace"><h1>$0</h1></field>
  • attributes
  • move 這可以跟前面幾種做結合,將選定的node移動到指定位置。
    這是將 my_field 從目前位置移動到 target_field 之後的位置
<field name="target_field" position="after">

    <field name="my_field" position="move"/>

</field>

如果是要修改現有的data的話,就不用像剛剛一樣,需要修改xml,只需要確定要寫入的記錄以及要更新的欄位和值。
這邊想將User security group變更為Librarian,到library_app.library_group_user:

<odoo>
  <record id="library_app.library_group_user" model="res.groups"> 
    <field name="name">Librarian</field>
  </record>
</odoo>

剛剛講到的都是後端介面,接下來就是要說前端,之前有說到在web頁面(圖書清單)判斷此書可否借,並只顯示可借書籍,會做在QWeb templates上,
新增library_member/views/book_list_template.xml

<odoo>
  <template id="book_list_extended"
            name="Extended Book List"
            inherit_id="library_app.book_list_template">

    <xpath expr="//span[@t-field='book.publisher_id']"
           position="after">
      <t t-if="not book.is_available">
        <b>(Not Available)</b>
      </t>
    </xpath>

  </template>
</odoo>

在記得到library_member/manifest.py data裡宣告:

"data":[
"views/book_list_template.xml",
],

最後再到http:// my-server:8069 /library/books

https://ithelp.ithome.com.tw/upload/images/20230929/201633262KIwz4E11B.png
https://ithelp.ithome.com.tw/upload/images/20230929/201633264gCaMc5cQH.png


上一篇
[Day13]結合odoo已有功能來擴充應用程式
下一篇
[Day15] 圖書館系統:更實務的資料欄位擴充
系列文
Odoo 魔法學院: 一步一腳印帶你成為客製化大師30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言